<?php

/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */

/**
 * Description of userClass
 *
 * @author USUARIO
 */
class userClass extends validateUserClass
{
   /* Metodo para ingresar a un usuario a la base de datos
    * este metodo valida si el usuario no encuentra registrado antes
    */
    public function inserUser($arrayParametros)
    {
        $arrayRespuesta = array("success"=>false,"mensaje"=>"error","code"=>0,"objecto"=>null);   
        try
        {
            $isEmailRepet  =  $this->isEmailRepet($arrayParametros['email']);
            if(!$isEmailRepet)
            {
                $newUser = new Usuario();
                $newUser->setNombre      (trim(strtolower($arrayParametros['nombre'])));
                $newUser->setApellido    (trim(strtolower($arrayParametros['apellido'])));
                $newUser->setProfesion   (trim(strtolower($arrayParametros['profesion'])));
                $newUser->setIdCiudad    (trim(strtolower($arrayParametros['ciudad'])));
                $newUser->setInstitucion (trim(strtolower($arrayParametros['institucion'])));
                $newUser->setEmail       (trim(strtolower($arrayParametros['email'])));
                $newUser->setPassword    (trim(strtolower($arrayParametros['password'])));
                $newUser->save(); 
                $arrayRespuesta['success'] = true;
                $arrayRespuesta['mensaje'] = "Se registro con exito";
                $arrayRespuesta['code'] = 200;
                $arrayRespuesta['objecto'] = $newUser;
            }
            else
            {
                $arrayRespuesta['mensaje'] = "El usuario ya se ecuentra registrado"; 
                $arrayRespuesta['code']    = 600;
            }
        } 
        catch (Exception $exc) 
        {
           $arrayRespuesta['mensaje'] = $exc->getMessage(); 
           $arrayRespuesta['code'] = $exc->getMessage();
        }
        return $arrayRespuesta;
    }
    
    
   /*Metodo que valida al el login del usuario
    * 1 = es para que usuario esta activo
    */

  public function verificacion_general($tipo,$profile,$password,$mail){
 
      $arrayRespuesta = array("success"=>false,"mensaje"=>"error","usuario"=>null);

      switch ($tipo)
      {

          case 1:
              $respuesta=$this->validarUsuario($mail,$password);
              if($respuesta["success"])
              {
                  /*creo la sesion del usuario al verificar que existe*/
                  $this->logIn($respuesta['objecto']);
                  $arrayRespuesta["success"]=true;
              }
              else
              {
                  $arrayRespuesta["usuario"]=$mail;
                  $arrayRespuesta["mensaje"]= $respuesta["mensaje"];
              }
              break;
          /* los siguientes casos son para verificar las cuentas en facebbok, twiter,etc*/
          case 2:
              $criteria_profile=new Criteria();
              $criteria_profile->add(DetalleUsuarioPeer::PROFILE,$profile);
              $detalle=DetalleUsuarioPeer::doSelectOne($criteria);
             // $detalle->getUsuario();
              if(is_object($detalle)){
                  $arrayRespuesta["success"]=true;
              }
              break;

      }

     return $arrayRespuesta;

  }


   public function validarUsuario($mail,$clave,$estado=1)
   {
        $arrayRespuesta = array("success"=>false,"mensaje"=>"error","code"=>0,"objecto"=>null); 
        $criteria= new Criteria();
        $criteria->add(UsuarioPeer::EMAIL,$mail);
        $criteria->add(UsuarioPeer::PASSWORD,$clave);
         /*Este condicion surge, por que cuando el usuario se registre por primera vez
         * quedara con estado 0, y no lo permitira autologiarse la primera vez
         * por eso la primer vez me mando 99 para que no entre a a la condicion 
         */
      
        $usuario=UsuarioPeer::doSelectOne($criteria);

        //si el usuario esxite en la base datos nos muestra una respuesta correcta(nos redirecciona a la pagina
        if(is_object($usuario))
        {
          $arrayRespuesta['success'] = true;
          $arrayRespuesta['objecto']   = $usuario;
        }
        //sino nos muestra un mensaje de error
        else
        {
           $arrayRespuesta['mensaje'] = "Usuario  y/o contraseña incorrecta".$mail.$clave;
        }
        //retornamos la respuesta
        return $arrayRespuesta;
    }


    
   public function logIn($user)
   {
        /*asignale a la session un objeto usuario*/
        sfContext::getInstance()->getUser()->setAttribute('s_login', $user);
        sfContext::getInstance()->getUser()->setAuthenticated(true);
   }
    
   public function logOut()
   {
        /*remuevo a la session un objeto usuario y del carrito */
        sfContext::getInstance()->getUser()->getAttributeHolder()->remove('s_login');
        sfContext::getInstance()->getUser()->getAttributeHolder()->remove('s_carrito');
        sfContext::getInstance()->getUser()->setAuthenticated(false);
   }
   
   public function insertarDetalleUsuario($array_datos)
   {
       
       $tipoRegistro      = $array_datos['tipo'];
       $usuarioBean       = $array_datos['usuarioBean'];
       $newDetalleUsuario = new DetalleUsuario();
       if($tipoRegistro="local")
       {
           $newDetalleUsuario->setIdUsuario($usuarioBean->getId());
           $newDetalleUsuario->setIdUsuario(1);
       }
       elseif($tipoRegistro="facebook")
       {
           
       }
   }

}

?>
